package Day_0209.NetWork;

/**
 * @author zxc
 * @date 2023/02/09 20:35
 **/
public class HTTP_LongAndShort_Connection {
    public static void main(String[] args) {
        /**
         * HTTP的长连接和短连接之间的区别
         * ===》
         * 1.HTTP协议的长连接和短连接，实质上是TCP协议的长连接和短连接。
         *
         * 2.短连接
         * （1）在HTTP/1.0中默认使用短链接,
         *  也就是说，浏览器和服务器每进行一次HTTP操作，就建立一次TCP连接，但任务结束就中断TCP连接。
         * （2）如果客户端访问某个HTML或其他类型的Web资源，如 JavaScript文件、图像文件、 CSS 、文件等。
         *  当浏览器每遇到这样的一个Web资源，就会建立一个HTTP会话.
         *
         * 3.长连接
         * （1）从HTTP/1.1起，默认使用长连接，用以保持连接特性。
         *  在使用长连接的情况下，当一个网页打开完成后，客户端和服务器之间用于传输HTTP数据的 TCP连接不会关闭。
         * （2）如果客户端再次访问这个服务器上的网页，会继续使用这一条已经建立的连接。
         *  Keep-Alive不会永久保持连接，它有一个保持时间，可以在不同的服务器软件（如Apache）中设定这个时间。
         *
         */

        /**
         * 长连接 && 短链接的优缺点
         * ===》
         * 1.长连接
         *（1）优点 ：
         * 长连接可以省去较多的TCP建立和关闭的操作，减少浪费，节约时间 。
         * 对于频繁请求资源的客户来说，较适用长连接。
         *
         *（2）缺点 ：
         * 不过这里存在一个问题，存活功能的探测周期太长，还有就是它只是探测TCP连接的存活，属于比较斯文的做法，遇到恶意的连接时，保活功能就不够使了。
         * 在长连接的应用场景下，client端一般不会主动关闭它们之间的连接，
         * Client与server之间的连接，如果一直不关闭的话，会存在一个问题，随着客户端连接越来越多，server早晚有扛不住的时候，
         * ===》
         * server端需要采取一些策略，如关闭一些长时间没有读写事件发生的连接，这样可以避免一些恶意连接导致server端服务受损；
         * 如果条件再允许，就可以以客户端机器为颗粒度，限制每个客户端的最大长连接数。
         *
         * 2.短连接
         *（1）优点 ：
         * 短连接对于服务器来说，管理较为简单，存在的连接都是有用的连接，不需要额外的控制手段。
         *（2）缺点 ：
         * 但如果客户请求频繁，将在TCP的建立和关闭操作上浪费时间和带宽。
         *
         */

        /**
         * 长连接 && 短连接的操作过程
         * ===》
         * （1）短连接的操作步骤是：
         *  建立连接——数据传输——关闭连接...建立连接——数据传输——关闭连接;
         *
         * （2）长连接的操作步骤是：
         *  建立连接——数据传输...（保持连接）...数据传输——关闭连接;
         *
         */
    }
}
